package com.gmono.managers.generic;

import java.sql.ResultSet;
import java.util.Collection;
import java.util.Map;

/**
 * 通用实体对象接口
 */
public interface IObject {
    /**
     * 列名表
     * @return 列名列表
     */
    Collection<String> getColumns();

    /**
     * 返回对象的值列表
     * @return 值列表
     */
    Map<String,Object> getValues();
    <T> T getValue(String key);

    /**
     * 各键的类型
     * @return
     */
    Map<String,Class> getTypes();

    /**
     * 返回主键
     * @return 主键
     */
    String getPrimaryKey();

    /**
     * 设置列的value
     * @param key 键
     * @param value 值
     * @return 是否成功
     */
    boolean setColumnValue(String key,Object value);
    /**
     * 根据给定选取匹配的补全信息 如果失败返回null
     **/
    IObject getInfo();

    /**
     * 通过一行来填充对象
     * @param row 数据库返回的行
     * @return 对象
     */
    IObject fillObject(ResultSet row);

    String getTableName();
}
